package com.example.democode01.kotlin

// 定义一个动物类作为基类，使用open关键字使其可被继承
open class Animal(val name: String) {
    // 使用open关键字定义可重写的方法，提供默认实现
    open fun makeSound() {
        println("$name 发出声音")                     
    }

    // 普通方法，所有动物都有吃东西的行为
    open fun eat() {
        println("$name 正在吃东西")
    }
}

// 定义狗类，继承自动物类
class Dog(name: String) : Animal(name) {
    // 重写makeSound方法
    override fun makeSound() {
        println("$name 汪汪汪")
    }
}

// 定义猫类，继承自动物类
class Cat(name: String) : Animal(name) {
    // 重写makeSound方法
    override fun makeSound() {
        println("$name 喵喵喵")
    }
}

// 定义鸟类，继承自动物类
class Bird(name: String) : Animal(name) {
    // 重写makeSound方法
    override fun makeSound() {
        println("$name 叽叽喳喳")
    }
}

fun main() {
    // 创建不同动物的实例
    val dog = Dog("旺财")
    val cat = Cat("咪咪")
    val bird = Bird("啾啾")

    // 调用动物的方法
    dog.makeSound()
    dog.eat()

    cat.makeSound()
    cat.eat()

    bird.makeSound()
    bird.eat()
}
